/* 
 * File:   AS5045B.h
 * Author: zy
 *
 * Created on December 20, 2021, 5:41 PM
 */

#ifndef AS5045B_H
#define	AS5045B_H
         

#include <xc.h>
#include <stdbool.h>
#include <stdint.h>

#ifdef	__cplusplus
extern "C" {
#endif

struct AS5045{
    uint16_t AngleDigtal;
    uint16_t Dat;
    uint8_t OCF;    //补偿完成 
    uint8_t COF;    //CORDIC 部分出现超出范围的错误。当该位置位时，D11:D0 中的数据无效。这绝对输出保持最后一个有效的角度值
    uint8_t LIN;   //当该位置位时，D11:D0 中的数据仍可使用，但可能包含无效数据。这个警告可以通过将磁铁放在里面来解决
    uint8_t Ang_L;  //角度数据低8位
    uint8_t Ang_H;  //角度数据高8位
    uint8_t MagINC;
    uint8_t MagDec;
    uint8_t Magnetic_Field; //磁场强度等级
    uint8_t Check_sum; //和校验数据
//    uint8_t CWW;       //0顺时针,1逆时针增加
//    uint8_t PWMdis;       //禁止PWM输出
//    uint8_t MagCompEN;  //设置后，激活 LIN 警报
//    uint8_t PWMhalfEN;
//    uint16_t ZeroPost;  //零点编程发送数据
}AS5045;

extern uint16_t Angle;

void WriteZero(void);
uint16_t Sim_Angle_Dout(void);
void AS5045_Dat(void);
#ifdef	__cplusplus
}
#endif

#endif	/* AS5045B_H */

